/**
 * Script para la GUI de banners
 * @author Sahib Jah!
 */

/**
 * Funcion para mostrar/ocultar el formulario para agregar/editar banners
 */
function show_banner_form( banner_id, show )
{
  if( show ){
    $('#banner_form').slideDown();
    $('#frm_banner').trigger('reset');

    // Llenar los campos con los datos del banner especificado por el banner_id
    if( banner_id == 0 ){
      switch_preview_images(0);
    } else {
      var $RowBanner = $('#row_banner_' + banner_id);
      $('#banner_id').val(banner_id);
      $('#banner_name').val($.trim($RowBanner.find('.column_name').text()));
      $('#banner_url').val( $RowBanner.data('url') );
      $('#banner_seconds').val( $RowBanner.data('seconds') );
      switch_preview_images(banner_id);
    }
  } else {
    $('#banner_form').slideUp();
  }
}

function switch_preview_images(banner_id)
{
  // Cargar las vistas previas
  $('#banner_preview_es, #banner_preview_en').attr('src', 'foobar.jpg');
  setTimeout(function(){
    $('#banner_preview_es').attr('src'
      , 'banners/actions.php?action=preview&banner_id=' + banner_id + '-es&' + Math.random());
    $('#banner_preview_en').attr('src'
      , 'banners/actions.php?action=preview&banner_id=' + banner_id + '-en&' + Math.random());
  }, 100);
}

/*
 * Cuando el documento esta listo :D
 */
$(document).on('ready', function(e)
{
  // Boton para mostrar formulario para agregar banner
  $('#btn_add_banner').on('click', function(e)
  {
    e.preventDefault();
    show_banner_form(0, true);
  });

  // Boton para cancelar la edición de un banner
  $('#btn_cancel_banner').on('click', function(e)
  {
    show_banner_form(0, false);
  });

  // Boton para editar banners
  $('a[data-edit-banner]').live('click', function(e)
  {
    show_banner_form( $(this).data('edit-banner'), true );
  });

  // Boton para borrar banners
  $('a[data-delete-banner]').live('click', function(e)
  {
    var banner_id = $(this).data('delete-banner');
    e.preventDefault();
    
    $.post('banners/actions.php', {
      action: 'delete',
      'banner_id': banner_id
    }, function(Response, text_status, jqXHR)
    {
      // Mostrar mensaje si es necesario
      if( Response.message != '') {
        alert(Response.message);
      }

      if( Response.error == false ) {
        // Borrar la fila del banner borrado
        $('#row_banner_' + banner_id).slideUp('fast', function(e)
        {
          $(this).remove();
        });
      }
    }, 'json');
  });

  // Formulario para guardar los datos del banner
  $('#frm_banner').on('submit', function(e)
  {
    Admin.showLoading(true);
    $('#btn_save_banners').attr('disabled', 'disabled');
    
    $('#iframe_upload').one('load', function(e)
    {
      Admin.showLoading(false);
      $('#btn_save_banners').removeAttr('disabled');
      var UploadResult = this.contentWindow.UploadResult;
      if( UploadResult == undefined ){
        alert('Ocurrio un error al enviar los datos.');
      } else {
        console.log(UploadResult);
        if( UploadResult.error ){
          alert(UploadResult.message);
        } else {
          show_banner_form(0, false);
          // Cargar la nueva fila del banner
          $.post('banners/actions.php',{
            action: 'load_row',
            banner_id: UploadResult.data.banner_id
          }, function(row_html, text_status, jqXHR)
          {
            // Actualizar las filas de banners en la GUI
            var $RowBanner = $('#row_banner_' + UploadResult.data.banner_id);
            console.log($RowBanner.length);

            if( $RowBanner.length == 1 ){
              // Reemplazar los datos en la fila
              $RowBanner.find('.banner_preview').attr('src'
                , 'banners/actions.php?action=preview&banner_id='
                  + UploadResult.data.banner_id + '-es&' + Math.random());

              $RowBanner.find('.column_name').text(UploadResult.data.banner_name);
              $RowBanner.data('url', UploadResult.data.banner_url);
              $RowBanner.data('seconds', UploadResult.data.banner_seconds);
            } else {
              // Insertar
              $('#banners_rows').prepend(row_html).sortable('refresh');
            }

            // Actualizar el sortable
            $('#banners_rows').sortable('refresh');
          }, 'html');
        }
      }
    });
  });

  // Sortable banners FTW!
  $('#banners_rows').sortable({
    axis: 'y',
    tolerance: 'pointer',
    opacity: 0.8,
    handle: '.column_banner img',
    update: function(e, jqElement)
    {
      $.post('banners/actions.php',
        $('#banners_rows').sortable('serialize') + '&action=order',
        function(Response, text_status, jqXHR)
        {
          if(Response.error){
            alert(Response.message);
          }
        });
    }
  });
});